/*
 * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */


package com.sun.jmx.snmp;


/**
 * Is used to represent an SNMP value.
 * The <CODE>Opaque</CODE> type is defined in RFC 1155.
 *
 * <p><b>This API is a Sun Microsystems internal API  and is subject
 * to change without notice.</b></p>
 */

public class SnmpOpaque extends SnmpString {

  private static final long serialVersionUID = 380952213936036664L;

  // CONSTRUCTORS
  //-------------

  /**
   * Constructs a new <CODE>SnmpOpaque</CODE> from the specified bytes array.
   *
   * @param v The bytes composing the opaque value.
   */
  public SnmpOpaque(byte[] v) {
    super(v);
  }

  /**
   * Constructs a new <CODE>SnmpOpaque</CODE> with the specified <CODE>Bytes</CODE> array.
   *
   * @param v The <CODE>Bytes</CODE> composing the opaque value.
   */
  public SnmpOpaque(Byte[] v) {
    super(v);
  }

  /**
   * Constructs a new <CODE>SnmpOpaque</CODE> from the specified <CODE>String</CODE> value.
   *
   * @param v The initialization value.
   */
  public SnmpOpaque(String v) {
    super(v);
  }

  // PUBLIC METHODS
  //---------------

  /**
   * Converts the opaque to its <CODE>String</CODE> form, that is, a string of
   * bytes expressed in hexadecimal form.
   *
   * @return The <CODE>String</CODE> representation of the value.
   */
  public String toString() {
    StringBuffer result = new StringBuffer();
    for (int i = 0; i < value.length; i++) {
      byte b = value[i];
      int n = (b >= 0) ? b : b + 256;
      result.append(Character.forDigit(n / 16, 16));
      result.append(Character.forDigit(n % 16, 16));
    }
    return result.toString();
  }

  /**
   * Returns a textual description of the type object.
   *
   * @return ASN.1 textual description.
   */
  final public String getTypeName() {
    return name;
  }

  // VARIABLES
  //----------
  /**
   * Name of the type.
   */
  final static String name = "Opaque";
}
